Проверка работы сервисов ALD Pro
==============================================================================

Для проверки работоспособности сервисов **ALD Pro** добавлена утилита **aldproctl**, которая расширяет функционал **ipactl**, проверяя также сервисы **ALD Pro**.

Конфигурация
----------------------------------------------

Файл конфигурации имеет три обязательных блока: **FreeIPA**, **ALD Pro** и **Other**. Перед началом работы необходимо сделать резервную копию файла ``aldproctl.env``, а затем внести в него перечень сервисов для проверки по примеру ниже. Файл находится по следующему пути: ``/opt/rbta/aldpro/mp/bin/aldproctl/aldproctl.env``.

.. code-block:: bash

   [FreeIPA]
   Directory Service
   krb5kdc
   kadmin
   named
   httpd
   ipa-custodia
   smb
   winbind
   ipa-otpd
   ipa-dnskeysyncd
   [ALD Pro]
   GLOBAL-CATALOG
   GCSync
   aldpro-mp-services
   aldpro-canclient
   ad-salt-canrunner
   syncer
   syncer.timer
   [Other]
   celery
   celerybeat

.. note:: 

   Название сервисов в конфигурационном файле должны полностью соответствовать примеру. Ниже приведен список сервисов, доступных к проверке:

-  Directory Service
-  krb5kdc
-  kadmin
-  named
-  httpd
-  ipa-custodia
-  smb
-  winbind
-  ipa-otpd
-  ipa-dnskeysyncd
-  dirsrv@GLOBAL-CATALOG
-  ipa-gcsync
-  celery
-  celerybeat
-  aldpro-mp-service
-  aldpro-canclient
-  ad-salt-canrunner
-  syncer
-  syncer.timer

Конфигурационный файл FreeIPA /etc/ipa/default.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Конфигурационный файл ``/etc/ipa/default.conf`` является основным для работы с **FreeIPA** в **ALD Pro**. Он определяет параметры подключения к домену и настройки сервисов. Ключевые особенности:

.. rubric:: Общая информация

**Порядок чтения конфигурации**

Конфигурация загружается в следующем порядке:

1. ``~/.ipa/default.conf`` (пользовательские настройки);
2. ``/etc/ipa/<context>.conf`` (контекстные файлы);
3. ``/etc/ipa/default.conf`` (системные настройки);
4. Встроенные константы.

**Контекстные файлы**

- ``/etc/ipa/cli.conf`` - для клиентских утилит;
- ``/etc/ipa/server.conf`` - для серверных компонентов;
- Параметры в контекстных файлах имеют приоритет над ``default.conf``.

**Каталог конфигурации**

- По умолчанию: ``/etc/ipa``;
- Может быть переопределён переменной окружения ``IPA_CONFDIR``.

.. rubric:: Конфигурация на клиенте

.. code-block:: bash

   [global]
   basedn = dc=ald,dc=company,dc=lan
   realm = ald.company.lan
   domain = ald.company.lan
   server = dc-1.ald.company.lan
   host = pc-1.ald.company.lan
   xmlrpc_uri = https://dc-1.ald.company.lan/ipa/xml

**Описание параметров**:

- ``basedn``: Базовый **DN** для **LDAP**-запросов (вычисляется из ``domain``, если не задан);
- ``realm``: **Kerberos**-область домена (обязательный);
- ``domain``: **DNS**-домен для поиска **SRV**-записей (``_ldap._tcp.domain``);
- ``server``: **FQDN** контроллера домена;
- ``host``: Имя текущего хоста;
- ``xmlrpc_uri``: **URL** для **XML-RPC API** (вычисляется из ``server``, если не задан).

.. rubric:: Конфигурация на сервере

.. code-block:: ini

   [global]
   host = dc-1.ald.company.lan
   basedn = dc=ald,dc=company,dc=lan
   realm = ald.company.lan
   domain = ald.company.lan
   xmlrpc_uri = https://dc-1.ald.company.lan/ipa/xml
   ldap_uri = ldapi://%2Frun%2Fslapd-ALD-COMPANY-LAN.socket
   mode = production
   enable_ra = False
   ra_plugin = None

**Описание параметров**:

- ``ldap_uri``: Путь к сокету **LDAP**-сервера (формат: ``ldapi://%2Fpath%2Fto%2Fsocket``);
- ``mode``: Режим работы. Допустимые значения: ``production`` (рабочий режим - отключаются тестовые функции для повышения производительности) и ``development`` (режим разработки - включаются дополнительные проверки и отладочная информация); 
- ``enable_ra``: **Не используется в ALD Pro**. Параметр унаследован из **FreeIPA** для интеграции с **DogTag CA**, но в текущей реализации **ALD Pro** управление сертификатами осуществляется через встроенный механизм **FreeIPA**.
- ``ra_plugin``: **Не используется в ALD Pro**. Устаревший параметр для выбора бэкенда **CA**. В **ALD Pro** все операции с сертификатами выполняются через стандартные инструменты **FreeIPA** (`ipa cert-*` команды).

**Примечание для ALD Pro**:

Параметры ``enable_ra`` и ``ra_plugin`` являются унаследованными из **Upstream FreeIPA** и **не влияют** на работу **ALD Pro**. Управление сертификатами полностью осуществляется через:

1. Стандартные команды **FreeIPA**: ``ipa cert-request``, ``ipa cert-show``;
2. Интегрированный **ЦС** на базе **FreeIPA CA**;
3. Автоматическую генерацию сертификатов при вводе хостов в домен.

.. rubric:: Сравнение параметров

.. list-table:: Параметры конфигурации клиента и сервера
   :header-rows: 1
   :widths: 20 10 10 60

   * - Параметр
     - Клиент
     - Сервер
     - Назначение
   * - ``host``
     - ✓
     - ✓
     - Имя текущего хоста
   * - ``basedn``
     - ✓
     - ✓
     - Базовый DN LDAP
   * - ``realm``
     - ✓
     - ✓
     - Kerberos-область
   * - ``domain``
     - ✓
     - ✓
     - DNS-домен для SRV-записей
   * - ``server``
     - ✓
     - x
     - FQDN контроллера
   * - ``xmlrpc_uri``
     - ✓
     - ✓
     - URL XML-RPC API
   * - ``ldap_uri``
     - x
     - ✓
     - Сокет LDAP-сервера
   * - ``mode``
     - x
     - ✓
     - Режим работы
   * - ``enable_ra``
     - x
     - ✓
     - Агент регистрации сертификатов
   * - ``ra_plugin``
     - x
     - ✓
     - Плагин для регистрации сертификатов 


В данной таблице отображены различия в использовании параметров конфигурационного файла ``/etc/ipa/default.conf`` между клиентскими и серверными системами **ALD Pro**, что позволяет администраторам быстро идентифицировать специфичные настройки для каждого типа узлов и избежать ошибок конфигурации.

.. rubric:: Примечания

1. В **ALD Pro** параметр ``ldap_uri`` обычно использует формат ``unix-сокет`` (как в примере конфигурации сервера выше, где указан путь ``ldapi://%2Frun%2Fslapd-ALD-COMPANY-LAN.socket``);
2. Для применения изменений в контекстных файлах (``server.conf``/``cli.conf``) перезапуск служб не требуется;
3. Значения параметров автоматически генерируются при вводе хоста в домен.

.. rubric:: Проверка корректности конфигурации


**Проверка синтаксиса**

.. code-block:: bash

   sudo ipa config-show --all

Необходимо убедиться, что вывод соответствует ожидаемым настройкам. Ошибки синтаксиса будут явно указаны в случаях их присутствия в конфигурации.

**Тестирование аутентификации**

.. code-block:: bash

   # Получение тикета Kerberos
   kinit <ваш_пользователь>

   # Проверка доступа к LDAP
   ldapsearch -Y GSSAPI -b "dc=ald,dc=company,dc=lan" "(objectClass=*)" | head -n 10

**Проверка работы утилит IPA**

.. code-block:: bash

   # Проверка статуса пользователя
   ipa user-status <пользователь>

   # Поиск объектов в каталоге
   ipa user-find

**Проверка журналов**

.. code-block:: bash

   # Журналы SSSD
   tail -f /var/log/sssd/sssd.log

   # Журналы Kerberos
   tail -f /var/log/krb5.log

**Проверка сетевой доступности**

.. code-block:: bash

   # Проверка DNS-разрешения
   nslookup dc-1.ald.company.lan

   # Проверка доступа к порту 443 (HTTPS)
   nc -zv dc-1.ald.company.lan 443

**Восстановление сервисов**

.. code-block:: bash

   sudo systemctl restart sssd
   sudo systemctl restart krb5-user

**Критерии успешной проверки**

- Команды ``kinit`` и ``ipa`` выполняются без ошибок;
- В журналах отсутствуют сообщения об ошибках подключения;
- **LDAP**-запросы возвращают корректные данные;
- Все параметры в ``ipa config-show`` соответствуют ожидаемым значениям.


Перечень команд
----------------------------------------------

Для выполнения команд с сервисами используется ``systemctl``.

.. _tab:criteria:
.. list-table::
   :widths: 40 60
   :header-rows: 1
   :class: longtable
   :name: табл. 5

   * - Команда
     - Описание
   * - ``sudo aldproctl -h``
     - Отображает справочное сообщение
   * - ``sudo man aldproctl``
     - Отображает развернутое справочное сообщение с описанием работы утилиты
   * - ``sudo aldproctl --version``
     - Отображает используемую версию ALD Pro
   * - ``sudo aldproctl start|stop|restart|status --timeout=TIMEOUT``
     - Устанавливает время ожидания для выполнения операции. По умолчанию 60 секунд
   * - ``sudo aldproctl start``
     - Запускает сервисы, указанные в конфигурационном файле
   * - ``sudo aldproctl status``
     - Отображает статус сервисов, указанные в конфигурационном файле
   * - ``sudo aldproctl stop``
     - Останавливает работу сервисов, указанные в конфигурационном файле
   * - ``sudo aldproctl restart``
     - Перезапускает сервисы, указанные в конфигурационном файле
   * - ``sudo aldproctl start|stop|restart|status --service=service_name``
     - Флаг ``service`` выполняет операцию ``start\|stop\|restart\|status`` для service_name (название сервиса)
   * - ``sudo aldproctl start|stop|restart|status --ipa-check-only``
     - Флаг ``-i``, ``--ipa-check-only`` - выполняет операцию ``start\|stop\|restart\|status`` для сервисов блока FreeIPA
   * - ``sudo aldproctl start|stop|restart|status --aldpro-check-only``
     - Флаг ``-a``, ``--aldpro-check-only`` - выполняет операцию ``start\|stop\|restart\|status`` для сервисов блока ALD Pro
   * - ``sudo aldproctl start|stop|restart|status --other-check-only``
     - Флаг ``-o``, ``--other-check-only`` - выполняет операцию ``start\|stop\|restart\|status`` для сервисов блока Other


Варианты отображения статуса сервиса
----------------------------------------------

-  ЗАПУЩЕН - команда start сработала без ошибок и сервис запустился
-  ОСТАНОВЛЕН - команда stop сработала без ошибок и сервис остановлен
-  ПЕРЕЗАПУЩЕН - команда restart сработала без ошибок и сервис перезапущен
-  НЕ НАЙДЕН - сервис с таким именем не найден
-  НЕАКТИВЕН (МЕРТВ) - сервис неактивен
-  ОШИБКА - ошибка при вызове команды или работе сервиса
-  ПРЕВЫШЕНО ВРЕМЯ ОЖИДАНИЯ - превышено время выполнения операции
